<?php
App::uses('AppController', 'Controller');
App::uses('CakeTime', 'Utility');
/**
 * Clientes Controller
 *
 * @property Cliente $Cliente
 * @property Endereco $Endereco
  * @property Cidade $Cidade
 */
class ClientesController extends AppController {
	public $components = array( 'RequestHandler' );
	public $helpers = array('Js');
	
	public function beforeFilter(){
			$this->loadModel('Endereco');
			$this->loadModel('Cidade');
		}
/**
 * index method
 *
 * @return void
 */
	public function index() {
		#filter results exemplo cliente
		$this->Filter->addFilters(
			array(
				'filter1' => array(
					'Cliente.nome' => array(
						'operator' => 'LIKE',
						'value' => array(
							'before' => '%', // opcional
							'after'  => '%'  // opcional
						)
					)
				)
			)
		);
		
		$this->Filter->setPaginate('order', 'Cliente.nome ASC'); // opcional
		$this->Filter->setPaginate('limit', 10);              // opcional
		
		// Define conditions
		$this->Filter->setPaginate('conditions', $this->Filter->getConditions());
		
		$this->Cliente->recursive = 0;
		$this->set('clientes', $this->paginate());
	}

	
/**
 * view method
 *
 * @throws NotFoundException
 * @param string $id
 * @return void
 */
	public function view($id = null) {
		if (!$this->Cliente->exists($id)) {
			throw new NotFoundException(__('Invalid cliente'));
		}
		$options = array(array('fields'=>array('id', 'nome','cpf','rg','data_nasc','sexo','email','telefone','celular',
								'status','tipo_cliente_id','endereco_id','estado_civil_id','enderecos.id','enderecos.rua',
								'enderecos.numero','enderecos.cep','enderecos.complemento','enderecos.cidade_id','cidades.id', 'cidades.nome')),
				'conditions' => array('Cliente.' . $this->Cliente->primaryKey => $id));
		
		$clientes = $this->Cliente->find('first', $options);
		$this->set('cliente', $clientes);
		
		$this->set('cidade', $this->Cidade->read('nome', $clientes['Endereco']['cidade_id']));
	
	}

/**
 * add method
 *
 * @return void
 */
	public function add() {
		if ($this->request->is('post')) {
			//$this->Cliente->create();
			//if($this->Cliente->afterValidate()){
			//if($this->Cliente->beforeSave()){
				$ender = $this->Cliente->Endereco->save($this->request->data);
				
				if (!empty($ender)) {
					$this->request->data['Cliente']['endereco_id'] = $this->Endereco->id;				
					if ($this->Cliente->save($this->request->data)) {
						$this->Session->setFlash(__('The cliente has been saved.'), 'default', array('class' => 'alert alert-success'));
						return $this->redirect(array('action' => 'index'));
					} else {
						$this->Session->setFlash(__('The cliente could not be saved. Please, try again.'), 'default', array('class' => 'alert alert-danger'));
					}
				}
				else{
					$this->Session->setFlash(__($ender), 'default', array('class' => 'alert alert-danger'));
				}
			//}else{
			//	$this->Session->setFlash(__('Cliente n�o pode ser salvo, verifique se n�o h� registros repetidos e tente novamente.'), 'default', array('class' => 'alert alert-danger'));
			//}
			
		}
// 			}else{
// 				$this->Session->setFlash(__('Ocorreu um erro na validacao, corrija os erros e tente novamente.'), 'default', array('class' => 'alert alert-danger'));
// 			}
		//}
		
		$cidades = $this->Cidade->find('list', array(
				'fields' => array('Cidade.id', 'Cidade.nome'),
				'conditions' =>
				array('Cidade.estado_id' => 12),
				'recursive' => 0));
		$this->set(compact('cidades'));
		
		$tipoClientes = $this->Cliente->TipoCliente->find('list');
		$estadoCivils = $this->Cliente->EstadoCivil->find('list', array( 'fields'=>array('id','descricao')));
		$this->set(compact('tipoClientes', 'enderecos', 'estadoCivils'));
	}

/**
 * edit method
 *
 * @throws NotFoundException
 * @param string $id
 * @return void
 */
	public function edit($id = null) {
		if (!$this->Cliente->exists($id)) {
			throw new NotFoundException(__('Código do Cliente inválido!'));
		}
		if ($this->request->is('post') || $this->request->is('put')) {
			debug($this->request->data);
			if ($this->Cliente->saveAssociated($this->request->data)) {
				$this->Session->setFlash(__('The cliente has been saved.'), 'default', array('class' => 'alert alert-success'));
				return $this->redirect(array('action' => 'index'));
			} else {
				$this->Session->setFlash(__('The cliente could not be saved. Please, try again.'), 'default', array('class' => 'alert alert-danger'));
			}
		} else {
			$options = array(array('fields'=>array('id', 'nome','cpf','rg','data_nasc','sexo','email','telefone','celular','status','tipo_cliente_id','endereco_id','estado_civil_id','Endereco.id','Endereco.rua','Endereco.numero','Endereco.cep','Endereco.complemento','Endereco.cidade_id')),
			'conditions' => array('Cliente.' . $this->Cliente->primaryKey => $id));
			$this->request->data = $this->Cliente->find('first', $options);
		}
		$cidades = $this->Cidade->find('list', array(
				'fields' => array('Cidade.id', 'Cidade.nome'),
				'conditions' =>
				array('Cidade.estado_id' => 12),
				'recursive' => 0));
		$this->set(compact('cidades'));
		$enderecos = $this->Cliente->Endereco->find('list');
		$tipoClientes = $this->Cliente->TipoCliente->find('list');
		$estadoCivils = $this->Cliente->EstadoCivil->find('list', array( 'fields'=>array('id','descricao')));
		$this->set(compact('tipoClientes', 'enderecos', 'estadoCivils'));
	}

/**
 * delete method
 *
 * @throws NotFoundException
 * @param string $id
 * @return void
 */
	public function delete($id = null) {
		$this->Cliente->id = $id;
		if (!$this->Cliente->exists()) {
			throw new NotFoundException(__('Invalid cliente'));
		}
		$this->request->onlyAllow('post', 'delete');
		if ($this->Cliente->delete()) {
			$this->Session->setFlash(__('The cliente has been deleted.'), 'default', array('class' => 'alert alert-success'));
		} else {
			$this->Session->setFlash(__('The cliente could not be deleted. Please, try again.'), 'default', array('class' => 'alert alert-danger'));
		}
		return $this->redirect(array('action' => 'index'));
	}

}